Management of input methods

ABSTRACT

Embodiments of a system and method are disclosed concerning the management of a plurality input methods on a computer. The input method may define how input from a human interface device is interpreted by a receiving application. The method may include locating one or more input method factors. The method may also include determining a numerical score of the input method factor using a metric of the input method factor and a weight of the factor. The method may also include ranking an input method factor using the determined numerical score of the input method factor. The method may also include presenting a user selection interface that lists the plurality of input methods as a function of the ranking.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/913,564, filed Jun. 10, 2013. The aforementioned relatedpatent application is herein incorporated by reference in its entirety.

FIELD

This disclosure generally relates to the management of input methods,specifically the ranking of input methods in a multiple languageenvironment.

BACKGROUND

Input methods can be used to allow non-Roman characters to be input intoa computing system. A user may have more than one input method on amultilingual enabled computing system with one or more locales so thatthe user has to select between two or more input methods rapidly. Thelocale can be a set of cultural and linguistic preferences for acomputing system.

SUMMARY

A method and system of managing input methods is provided.

One embodiment may be directed towards a computer-implemented method ofselecting a primary input method from a plurality of input methods. Theinput method may define how input from a human interface device isinterpreted by a receiving application. The method may include locatingone or more input method factors. The method may also includedetermining a numerical score of the input method factor using a metricof the input method factor and a weight of the factor. The method mayalso include ranking an input method factor using the determinednumerical score of the input method factor. The rank of each inputmethod may also be used to re-configure a new primary input method inreal-time. The method may also include presenting a user selectioninterface that lists the plurality of input methods as a function of theranking.

Another embodiment may be directed towards a system of selecting aprimary input method from a plurality of input methods. Each inputmethod may define how an input from a human interface device isinterpreted by a receiving application on a computing processing system.The system may include an input method portfolio having the plurality ofinput methods. The input method may have one or more input methodfactors. The system may also include an input method daemon configuredto score one or more input method factors, and rank the input methods asa function of the score of the input method factor. The input method mayalso include a user selection interface configured to visually conveythe input methods as a function of the rank.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a block diagram of a client computer, according tovarious embodiments.

FIG. 2 depicts a block diagram of the interaction of the components ofthe client computer, consistent with various embodiments.

FIG. 3 depicts a high-level diagram of a system that includes clientcomputer and server interactions, consistent with various embodiments.

FIG. 4 depicts a high-level flowchart of a method to select a primaryinput method or a preferred input method, consistent with variousembodiments.

FIG. 5 depicts a flowchart of the method to preset an input method,consistent with various embodiments.

FIG. 6 depicts a flowchart of a method of monitoring and scoring apattern of input method usage, consistent with various embodiments.

FIG. 7 depicts a table that may result from the scoring of the inputmethods, consistent with various embodiments.

FIG. 8 depicts a method of presenting an input method rank, consistentwith various embodiments.

FIG. 9 depicts a method of selecting a preferred input method,consistent with various embodiments.

Unless otherwise specified, like reference numbers and designations inthe various drawings indicate like elements.

DETAILED DESCRIPTION

Aspects of the present disclosure are directed toward a method ofranking a plurality of input methods and selecting a primary inputmethod from the ranked input methods on the fly. The present disclosuremay concern locating one or more input method factors and determining anumerical score of the input method factor using a metric of the inputmethod factor and a weight of the factor. The present disclosure mayalso concern using the numerical score of the factor to rank the inputmethod and presenting the rank of a plurality of input methods for sothat the user may select a primary input method. Although notnecessarily limited thereto, embodiments of the present disclosure canbe appreciated in the context of input methods and problems relating toselecting input methods.

In the descriptions provided herein, specific details of variousembodiments are provided. However, various embodiments may be practicedwith less than all of these specific details. In other instances,certain methods, procedures, components, structures, and/or functionsare described in no more detail than to enable the various embodimentsof the disclosure, for the sake of brevity and clarity.

Input methods can allow any data to be received as an input which canallow users to enter characters and symbols not found on their inputdevices. For example, input methods can allow the user of a Latinkeyboard to input Chinese, Japanese, Korean, and Indic characters to acomputing system. Examples of Indic characters include: Burmese,Nepalese, Thai, Bengali and Tamil. Input methods can also be used forCyrillic, Greek, Latvian, Lithuanian, and Vietnamese scripts.

Input methods for the Chinese language can include shape-based inputmethods like WUBI, ZHENG CODE, and DAYI, and phonetic-based inputmethods like PINYIN, ZHUYIN. Input methods for the Japanese language caninclude ROMANJI, HIRAGANA, KATAKANA. Input methods for the Koreanlanguage can include HANGUL, and HANJA. Input methods for the Chinese,Japanese, and Korean language are used as examples throughout thedisclosure for the purposes of illustrating languages that have multipleinput methods.

Multiple input methods on a computing system exist for certainlanguages. In modern operating systems, multiple input methods may beconfigured/installed/selected, either manually or semi-manually, basedon user preferences. The input method configuration may include, forinstance, adding, deleting, re-ordering, deleting, re-ordering,invoking, and switching input methods in different levels of anoperating system or application.

The order of input methods can be manually specified on some computersystems. Between manual interventions, the resulting order will remainfixed. Furthermore, in mobile devices, the storage space is limited formultiple input methods which may allow a mobile device to hold few inputmethod file packages. Aspects of the present disclosure may concern acomputer system designed to automatically generating a dynamic inputmethod ranking from the analysis of the user's interaction with aplurality of input methods. The term input method may also refer toinput method editors, or input method emulators interchangeablythroughout this disclosure. Such aspects can be particularly useful formodifying how input methods are selected and/or displayed to users inthe absence of (or in addition to) manual inputs.

FIG. 1 depicts a block diagram of a client computer 102, according tovarious embodiments. The client computer 102 may have a memory 112, aprocessor(s) 114, a human interface device 116, a display 118, and aninput method daemon 120. As depicted, the client computer 102 may host aparticular application that the user may access. In certain embodiments,the client computer 102 is a desktop, or laptop computer. The clientcomputer 102 can also be a mobile computing device that allows a user toconnect to and interact with the application running on the clientcomputer 102.

Consistent with embodiments of the present disclosure, the clientcomputer 102 can recommend or display a primary input method to a user.The primary input method can be a default input method in variousembodiments. For instance, client computer can execute instructionsstored in the memory 112 using the processor 114. In variousembodiments, the memory 112 is a random access memory (RAM) or anothertype of dynamic storage device. In certain embodiments, the memory 112is a read-only memory (ROM) or another type of static storage device. Incertain embodiments, the illustrated memory 112 is representative ofboth RAM and static storage memory within the client computer 102.Hence, the memory 112 may store operations and functions associated withthe generation of the file as well as a save operation to save the fileto the memory 112 (as discussed in FIG. 2). In certain embodiments, thememory 112 is an electronically programmable read-only memory (EPROM) oranother type of storage device. Additionally, various embodiments storethe instructions as firmware such as embedded foundation code, basicinput/output system (BIOS) code, or other similar code.

In certain embodiments, the processor 114 is a central processing unit(CPU) with one or more processing cores. In certain embodiments, theprocessor 114 is a graphical processing unit (GPU) or another type ofprocessing device such as a general purpose processor, an applicationspecific processor, a multi-core processor, or a microprocessor.Alternatively, a separate GPU may be coupled to the display device 118.In general, the processor 114 executes one or more instructions toprovide operational functionality to the client computer 102. Theinstructions may be stored locally in the processor 114 and/or in thememory 112. Alternatively, the instructions may be distributed acrossone or more devices such as the processor 114, the memory 112, oranother data storage device.

In various embodiments, the client computer 102 may include a humaninterface device 116. The human interface device 116 may receive aninput from the user's key strokes, voice, or any input device, and maytranslate the input into computer-coded instructions for the clientcomputer 102. For instance, the human interface device 116 may be akeyboard, mouse, touch screen, camera, microphone, or other device thatuses any kind of tactile input. In certain embodiments, the humaninterface device 116 may be configured to receive an auditory input suchas a voice commands. In certain embodiments, the human interface device116 may use a visual input such as motions or gestures that give aninstruction to the client computer 102.

In various embodiments, the display device 118 is a graphical displaysuch as a cathode ray tube (CRT) monitor, a liquid crystal display (LCD)monitor, or another type of display device. In particular embodiments,the display device 118 is configured to visually display the primaryinput method. In various embodiments, the display device 118 may be analternate method of communicating. For example, the display device 118can be a spoken word audio interface for visually impaired users. Thedisplay device 118 can also be configured to display a user selectioninterface (discussed on FIG. 2) to allow the user to select an inputmethod.

The client computer 102 may also include an input method daemon 120. Theinput method daemon 120 may be an application that the client computer102 uses to perform the ranking, monitoring, and updating of the inputmethod portfolio. Throughout the disclosure, the input method daemon 120may be referred to periodically as the daemon 120. The operation andcomponents of the input method daemon 120 may be further described onFIG. 2. In various embodiments, the daemon 120 resides in the memory 112or at a location accessible via a network. The input method daemon 120may be part of the operating system for the client computer 102.

FIG. 2 depicts a block diagram of the interaction of the components ofthe client computer 102, consistent with various embodiments. As shown,the memory 112, the human interface device 116, the display 118, and theinput method daemon 120 may interact in the client computer 102,according to various embodiments.

The memory 112 may correspond to the memory of the client computer 102depicted on FIG. 1. As depicted, the memory 112 may have an input methodportfolio 210, and a file system 212. The input method portfolio 210 mayhave a listing of the input methods available to the user and a historyof the input methods selected by the user. The user on the clientcomputer 102 may access the input method portfolio 210 and use the inputmethod portfolio 210 to determine the primary input method or determinea rank of input methods relative to each other. The input methodportfolio 210 may access the file system 212 to gain access to the filepackages associated with the input methods. In certain configurations ofthe embodiment, the input method portfolio 210 may contain the filepackages associated with the input methods without the need for a filesystem.

In certain embodiments, the file system 212 is a software and/orhardware mechanism to store and organize electronic content, such asfiles and data stored in the files on the memory 112. The file system212 generally allows a user to find, search for, and access the filesstored on a storage device. Hence, in general, the file system 212includes a database for the storage, hierarchical organization,manipulation, navigation, access, and retrieval of files and dataassociated with the files. For instance, the file system 212 may includea disk file system, a flash file system, a database file system, atransactional file system, a network file system, and/or other similarfile systems. The file system 212 may access data from a data storagedevice such as a hard disk or compact disc read only memory (CD-ROM) andrequire the maintenance of the physical locations of the files.Additionally, the file system 212 may access data on a file server byacting as a client for a network protocol. The file system 212 may alsoinclude a virtual filing system such as a process file system (procfs).

In the shown configuration, the file system 212 may have the inputmethod file packages 216 and related locale file packages 214, but morefile packages are possible. The input method file package 216 may be afile or group of files that contains the instructions for the clientcomputer 102 to recognize a particular input. For example, the inputmethod file package 216 for a WUBI input method, which is a type ofChinese language input method, may contain the different strokesavailable for the user and the corresponding Chinese Character values(such as Unicode Code Point). The locale file package 214 may be a fileof different locales. The locale file package 214 may include, but notnecessarily include, one or more input method file packages 216. Forexample, the locale file package 216 may include Simplified Chinese withthe WUBI and PINYIN input method.

As mentioned above, the input method portfolio 210 may have a listing ofall the input methods available to the client computer 102 and a historyof all of the user interactions with a particular input method. In theshown configuration, the input method portfolio 210 may have one or moreinput methods 218 and each input method 218 may have one or more inputmethod factors 220. The input method factor 220 may include a history ofinput method usage, or a history of the locale usage. The input methodfactor 220 can include associations with locales and languages. Forexample, if the input method 218 is PINYIN, then the input method factor220 can be the locale used with the PINYIN input method. The inputmethod factors 220 are described further below. In certain embodiments,the input method portfolio 210 may have a table of input methods 218,followed by input method factors 220 that correspond to each inputmethod 218. The input method portfolio 210 may also have an input methodserver list 222.

The input method file packages 216 and the locale file packages 214contained in the file system 212 may not contain every file packageavailable to the client computer 102. Consistent with embodiments, oneor more remote servers (discussed further in FIG. 3) may have the filepackages associated with a particular input method. The input methodportfolio 210 may have an input method server list 222 to identify thelocation of the input method on a remote server. The input method serverlist 222 may point to local copies of the input method. For example, ifthe input method is located on a partition of the memory 112, then theinput method server list 222 may point to a different user on the sameclient computer 102. In various embodiments, the input method serverlist 222 may contain servers for particular languages. For example, aserver containing input methods for the Japanese language may be adifferent server than the server containing input methods for the Koreanlanguage.

In an embodiment, the input method portfolio 210 may form an orderedrank of input methods based on the input method factors 220. Forexample, if the input method portfolio 210 is a table of the inputmethods 218 along with the input method factors 220, then the rank 224may be another factor associated with the input method 218. In certainembodiments, the rank of the input methods 218 may be stored in aseparate file referred to as an input method rank 224. In certainembodiments, the input method rank 224 may be a file that lists theinput method 218 along with a number value that corresponds with a rank.The input method rank 224 may also be a list of input methods 218 with aparticular order.

The client computer 102 may also have a daemon 120. As described above,the daemon 120 may be used to rank input methods 218 in the input methodportfolio 210 and select a primary input method based on the inputmethod rank 224. The daemon 120 may also be used to run applicationsoutside of the scope of selecting a primary input method. For example,the input method daemon 120 may manage user selections or install arequired language support file packages.

In the shown configuration, the daemon 120 may have an input methodanalyzer 226, an input method installation manager 228, and an inputmethod portfolio manager 230. The daemon 120 may use the input methodanalyzer 226 to examine the input method factors 220 that occur asevents in the client computer 102. For example, the analyzer 226 mayanalyze the web pages visited to determine the locale, which can be aset of cultural and linguistic preferences, and use the locale to narrowdown a predicted input method. In another example, the analyzer 226 maymonitor the input method used when drafting a document as well as thetime spent using the input method.

The analyzer 226 may also look at which location they are from, as wellas linguistic analysis of the content. For example, the analyzer 226 mayalso examine other operating system settings such as the time zone, aswell as network connectivity for location approximation. The analyzer226 may use any device on the client computer 102. For example, theanalyzer 226 may use a GPS, geo-location data, domain name, IP address,language metadata, processed scripts, or accessed languages in order todetermine the language and the common input method preferred by otherusers in the same geographic area.

If the input method portfolio 210 does not have an input method filepackage 216 in the file system 212, then the daemon 120 may download theinput method file package corresponding to the input method 218 usingthe input method server list 222. Specifically, the daemon 120 may havean input method installation manager 228 to track and install oruninstall an input method not in the file system 212. In variousembodiments, the user may select an input referred to as a preferredinput method when the primary input method is not adequate to the user.If the preferred input method is not installed onto the client computer102, then the client computer 102, through the installation manager 228,may use the input method server list 222 to connect to a servercontaining input method file packages. The relationship between theserver and the client computer 102 may be further described in FIG. 3.

The daemon 120 may also have an input method portfolio manager 230. Theinput method portfolio manager 230 may monitor the input methodportfolio 210. The input method portfolio manager 230 may manage theinput method rank 224. In certain embodiments, the input methodportfolio manager 230 may ensure that all references within the inputmethod portfolio 210 are functioning. For example, the input methodportfolio manager 230 may ensure that the input method server list 222has links to active servers and may monitor the status of the variousservers. As shown, the input method portfolio manager 230 maycommunicate with the input method portfolio 210.

The client computer 102 may select a primary input method to present aninput method 218 to the user through the display 118. In certainembodiments, the daemon 120 may present more than one input methods tothe user in a ranked form. For example, the user may be presented with alist of more than one input methods 218 in a ranked form but the primaryinput method may appear first.

The display 118 may use a user selection interface 232. In variousembodiments, the user selection interface 232 may be a graphical userinterface or auditory user interface and may be part of the operatingsystem for the client computer 102. The user selection interface 232 mayallow the user to select a selected input method 234 in real-time.Real-time can be defined by microseconds with the user selectioninfluencing the rank. The selected input method 234 may be a primaryinput method that the client computer 102 recommends or may be an inputmethod 218 that is selected by the user, e.g., the preferred inputmethod.

As mentioned above, the user may interact with the user selectioninterface 232 of the client computer 102 through a human interfacedevice 116 to select the selected input method 234. In an embodiment,the user selection interface 234 may display the selected input method234 obtained from the input method portfolio 210, particularly the inputmethods 218 obtained from the input method rank 224. The input methodrank 224 may be formed using the interactions with the daemon 120. Theuser may accept the input method presented or may select another inputmethod 218. If the user selects another input method 218 other than onepresented, then the input method analyzer 226 may receive the selectionof the user. The daemon 120 may use the selection of the user toinfluence the input method rank 224.

FIG. 3 depicts a high-level diagram of a system 300 that includes clientcomputer 102 and server interactions, consistent with variousembodiments. As depicted, the system 300 may include a client computer102, a server 304, and a network 306. The server 304 may be optional andthe client computer 102 may be the primary computer, in variousembodiments. For example, the client computer 102 may stand alonewithout a connection to a server 304. In certain embodiments, more thanone server 304 may exist in the system 300. In the shown embodiment, theserver 304 may have one or more server locations; 304A, 304B, and 304C.Each server location, e.g., 304A, may have one or more input method filepackages 216 or locale file packages 214.

The system 300 may allow a user to interface with the client computer102. In one configuration, the client computer 102 may be a partitionand the server 304 may be on another partition. Although the depictedsystem 300 is shown and described herein with certain components andfunctionality, certain embodiments of the system 300 may be implementedwith fewer or more components or with less or more functionality. Forexample, various embodiments of the system 300 may not include a network306 and a server 304. Hence, various embodiments of the system 300include only the client computer 102. Additionally, various embodimentsof the system 300 may include a plurality of client computers 102 and aplurality of networks 306. Additionally, various embodiments of thesystem 300 may include similar components arranged in another manner toprovide similar functionality, in one or more aspects. In certainembodiments, the server 304 is an array of servers. Additionally,multiple server instances may be run on a single server 304.

The server 304 may connect to the client computer 102 via a local areanetwork (LAN) or other similar network 306. The network 306 maycommunicate traditional block input/output (I/O), such as over a storagearea network (SAN). The network 306 may also communicate file I/O, suchas over a transmission control protocol/internet protocol (TCP/IP)network or similar communication protocol. In various embodiments, thesystem 300 comprises two or more networks 306. Alternatively, the server304 may be connected directly to the client computer 102 via a backplaneor system bus. In certain embodiments, the network 306 may include acellular network, other similar type of network, or combination thereof.

FIG. 4 depicts a high-level flowchart of a method 400 to select aprimary input method or a preferred input method, consistent withvarious embodiments. Overall, the method 400 may select a primary inputmethod or allow the user to select the preferred input method which mayimprove selection of the primary input method. The method 400 may beginat operation 410 where the input method is preset. In the presetoperation, the daemon 120 may take an ‘inventory’ of all the inputmethods present on the client computer 102 and load a default list. Thisprocess is described in more detail on FIG. 5.

After the input method is preset, the method 400 may continue tooperation 411. In operation 411, the daemon 120 may assign metrics tovarious factors in order to determine a ranking of input methods fordifferent languages. Operation 411 may be further described in FIG. 6.

After the input methods are ranked in the input method rank 224, themethod 400 may proceed to operation 412. In operation 412, the daemon120 or a component of the daemon 120, e.g., the input method portfoliomanager 230, may determine whether there are any stale input methods inthe input method portfolio 210. Stale input methods may be input methodsthat are unlikely to be selected as a primary input method or selectedby the user. In certain embodiments, the stale input method may be anunused input method in the input method portfolio 210. For example, ifan input method 218 is not used within two months, then it may beconsidered stale. An input method that is unlikely to be selected by theuser may be triggered by a geographic location or a browsing history ina web browser. In certain embodiments, the geographic location orbrowsing history may be compared to other users to determine popularinput methods. For example, an input method 218 may be considered staleif the user has a geographic location of a particular region of acountry, e.g., determined by IP address or GPS, where a majority ofusers use a particular input method.

There may be instances where the user can select stale input methods toremove. In various embodiments, the display device 118 or user selectioninterface 232 can highlight particular input methods that are close tobecoming stale. For example, the input method that is close to becomingstale can be an input method that has not been used in 5 weeks when thethreshold is 6 weeks. The close to becoming stale input method can behighlighted, for example, by dimming the input method on the userselection interface 232. The user can also choose to explicitly keep theclose to becoming stale input method or the stale input method around,in various embodiments.

The method 400 may proceed to operation 413 in response to adetermination of a stale input method. In operation 413, one or moreinput methods may be removed. For example, if the input method HANGUL isnot used within a time period, e.g., 4 weeks, then the input method filepackage 216 may be removed from the memory 112. In certain embodiments,the input method may be removed if it falls below a certain rank, e.g.,in operation 620 described in FIG. 6. For example, the daemon 120 mayremove all but the five top ranked input methods. If the input methodHANGUL is ranked sixth and the input method file package 216 is presenton the client computer 102, then the input method file package 216 forHANGUL may be removed.

In operation 414, the daemon 120 may present a primary input method tothe user based off of the input method rank 224. In various embodiments,the input method rank 224 may exist for each application on the clientcomputer 102. The input method daemon 120 may select a primary inputmethod depending on the application used. For example, a user may use aprimary input method of PINYIN for a web browser but use a primary KANAinput method for a text-based chat program. In various embodiments,operation 414 may reorder the input method rank 224 using updated inputmethod factors 220. For example, if the user selected the WUBI inputmethod instead of the primary input method PINYIN in a particularapplication, then the input method daemon 120 may use the user input ofthe WUBI input method as a input method factor when reordering the inputmethod rank 224. The presentation of the primary input method can occurin real-time where the input methods are continuously ranked andpresented to the user as the input methods are ranked. Operation 414 maybe further described in FIG. 8.

After a primary input method is selected by the input method daemon 120,then the method 400 may proceed to operation 416. In operation 416, theclient computer 102 may prompt the user to determine if the user wantsto use the primary input method. In various embodiments, the user may beprompted by the client computer 102 via a user selection interface 232to make a selection other than the primary input method. For example, ifthe primary input method is WUBI, the client computer may use the WUBIinput method unless the user selects another input method.

In various embodiments, the primary input method can be selectedautomatically, i.e., without taking into account user input. The primaryinput method may be automatically selected with or without notifying theuser when the input method is automatically changing. In variousembodiments, the user may be presented with an option to revert to theprior input method which can be reflected in the input method rank 224.Notifying the user when the input method is automatically changing mayhave advantages when, for example, a software application may be inJapanese, but the user has occasional or frequent use of Chinese.

In certain embodiments, the client computer 102 may adjust the inputmethods based on the language displayed. For example, if the inputmethod is PINYIN but the text on the application is in Japanese, thenthe computer 102 may offer KANA or other input methods for the Japaneselanguage. If the user selects the primary input method, then the method400 may proceed to operation 418.

Alternatively, the user may select a different input method referred toas the preferred input method. If the user selects the preferred inputmethod, the method 400 may proceed to operation 420 (further describedin FIG. 9). The user may prompted if the user is performing a triggeringevent, e.g., if the user is typing as opposed to reading (discussedfurther below). The selection of a preferred input method in operation420 can further influence the measurement of input method factors inoperation 411.

FIG. 5 depicts a flowchart of the method 410 to preset an input method,consistent with various embodiments. The method 410 may correspond tooperation 410 in FIG. 4. The method 410 may preset an input method whenthe client computer 102 initializes. In certain embodiments, the clientcomputer 102 initializes during a startup or when a new user isactivated, but other configurations are contemplated. In the presetoperation, the input method is loaded onto a client computer along withan initial primary input method order (discussed further below).

The method 410 may begin at operation 510. In operation 510, the inputmethod daemon 120 may start. The input method daemon 120 may be loadedat an operating system level or whenever the client computer 102 startsup in a boot mode. In various embodiments, the input method daemon 120may be loaded onto the file system 212 and started from the memory 112.

After the input method daemon 120 starts, then the user profile ischecked in operation 512. The user profile may uniquely identify aparticular user and may contain user preferences, e.g., an affinity of auser to user certain input method. The user profile may be loaded alongwith the operating system on the client computer 102 in variousembodiments. The user profile may be checked by a simple authenticationprocess to verify the user identity. The user profile may also bechecked for user's preferred input method that may be obtained inoperation 420. This may also include past instances of input methodusage obtained in operation 418. For example, the user profile may showthat the user used the WUBI input method four times but used the PINYINinput method only once which indicates that the WUBI input method ispreferred by the user. In another example, the user profile may rank theWUBI input method over the PINYIN input method for Chinese in astructured list. The language used in the client computer 102 may beused to determine the influence method. For example, the language HanChinese may be associated with the WUBI, or PINYIN input method but notthe KANA input method. The current language being used by the user maybe detected using the following pseudo code:

get current locale: cur_locale = setlocale(LANG,0); Parse the cur_localestring: zh_Hans_CN.UTF-8 to zh, Hans, CN, UTF-8 LANGUAGE TAG: zh:Chinese Script TAG: Hans: Simplified Chinese Region TAG: CN: China(mainland) Codset TAG: UTF-8: Unicode encoded in UTF-8 scheme

After the user profile is checked, then the method 410 may proceed tooperation 513. In operation 513, the daemon 120 may determine whetherthe user wants to use input methods from a prior session. In variousembodiments, the user may receive a prompt on a user selection interface232. In certain embodiments, the daemon 120 may assume that the userwants to use input methods from a prior session. The user may indicateto the client computer 102 to use the input methods from a prior sessionand the method 410 may proceed to operation 514. The user may also notelect to user input methods from a prior session and the method 410 mayproceed to operation 516.

In operation 514, one or more input methods are loaded onto theoperating system. The input methods that are loaded may depend on theinput methods projected to be used from the user profile. For example,if the user profile indicates that WUBI (Chinese), and KANA (Japanese)are the most frequently used input methods, then the input method filepackage 216 for both WUBI and KANA may be loaded so that is may beaccessed by the operating system.

After the input method is loaded, then the method 410 may proceed tooperation 516. In operation 516, an initial primary input method orderor rank is set and an initial primary input method may be selected fromthe initial primary input method rank 224. In various embodiments, theinitial input method rank 224 may be set by the daemon 120 and loadedinto the input method portfolio 210.

The initial input method rank 224 may be modified in subsequentoperations, e.g., operation 411 or operation 418 in FIG. 4. The initialinput method rank 224 may incorporate the input method preferences onthe user profile. For example, if the user profile indicates that WUBIwas used the most, followed by KANA, followed by PINYIN, then theinitial input method rank 224 may resemble WUBI, KANA, and PINYIN. Theclient computer 102 may use the input method rank 224 to automaticallydetermine the input method to use. The initial primary method rank 224may vary based on the application used. For example, the primary inputmethod for a word processor may be different than the primary inputmethod for an internet browser. After the initial input method rank 224is formed, then the operation may proceed to operation 411 from FIG. 4,consistent with various embodiments.

If the user does not want to use the results from a prior session inoperation 513, then the initial primary input method may be selected bythe user or selected by the daemon 120 arbitrarily based on the languageselected. For example, if the language is Chinese, then the daemon 120may arbitrarily assign the WUBI input method from a list of inputmethods in the input method portfolio 210. In certain embodiments, thedaemon 120 may access the network 306 to determine a frequently usedinput method for a particular language or locale. For example, thedaemon 120 may note that the locale is mainland China and access thenetwork to determine that PINYIN is the most popular input method usedby other users and select PINYIN as the input method.

FIG. 6 depicts a flowchart of a method 411 of monitoring and scoring apattern of input method usage, consistent with various embodiments. Themethod 411 may correspond to operation 411 in FIG. 4. The method 411 maymonitor the client computer 102 for input method factors 220. Forexample, the input method factors 220 may determine a user's affinityfor an input method for a certain language used. The method 411 maybegin at operation 610, where the daemon 120 selects input methodfactors 220 to monitor based on prior usage of the input method. Inputmethod factors 220 to be selected may also be customized by the user.The input method factors 220 used in method 411 may include a language,location, locale, an application, user interaction with a particularinput method, or any other parameter associated with a particular inputmethod. Throughout this disclosure, language and locale may be used asexamples but more input method factors 220 may be used. The input methodfactors 220 may be tracked according to the input method used for eachapplication or by examining how input methods are used by the clientcomputer 102 as a whole.

For example, when looking at the client computer 102 as a whole, thedaemon 120 may examine a frequency of input methods used for eachapplication and give a total for the client computer 102. In the aboveexample, if the PINYIN input method was used three times and the WUBIinput method was used two times for the web browser, and the WUBI inputmethod was used ten times and the PINYIN input method was used fourtimes for the word processor, then the WUBI input method may have ahigher rank than the PINYIN input method for the client computer 102.

After the input method factors 220 are monitored, the method 411 maycontinue to operation 612. In operation 612, the usage metric of theinput method factor 220 may be determined. Although usage metric isreferred to throughout this disclosure. The usage metric can one type ofmetric. For example, other metrics may include performance metrics, orimpact metrics in various embodiments. In certain embodiments, the usagemetric may be a count of the input method factor 220. For example, thedaemon 120 may determine the usage metric is the number of charactersused for an input method with the input method factor 220 being thecharacters used for the input method. In another example, the usagemetric is the counts of loading locale objects in each language with theinput method factor 220 being the locale. In another example, the numberof times a language is used may be the usage metric with the language asthe input method factor 220. In certain embodiments, operation 612 maybe combined with operation 610.

The usage metric may be flexible. The usage metric may be the number oftimes that an input method is invoked. The usage metric may be astatistical value. For example, if the input method WUBI is used sixtyout ninety instances, while the input method PINYIN is used forty out offifty instances, then the usage metric may favor the input methodPINYIN. In certain embodiments, the pseudo code that representsobtaining the usage metrics may be represented as follows:

In locale selection level switch(Locale_obj->state) { //Locale ObjectState   case LOCSEL_STATE: //change locale request    change_locale_operation( ); // normal locale selection operation    Change_Locale_Record(locale_name, application_ID); // recorded thelocale changes    break; In input method select levelswitch(IME_obj->state) { //IME Object State   caseIMESEL_STATE: //change IME request     change_ime_operation( ); //normal IME selection operation     Change_IME_Record(IME_name,application_ID); // recorded the IME changes    break;

After the usage metric is determined, then the method 411 may continueto operation 614. In operation 614, the weight for the factor may bedetermined. In various embodiments, the user may set the weight of thefactor. For example, the user may determine that the language factor hasa 70% weight, the locale factor has a 5% weight, and the input methodfactor has a 25% weight.

After the weight for each factor is determined, then the method 411 mayproceed to operation 616. In operation 616, the daemon 120 may determinewhether there is enough data from the input method factor usage metricand weight to produce a score (discussed below). In certain embodiments,the score may be the weight adjusted usage metric. In the mentionedembodiment, an absence of either the weight or usage metric for theinput method factor 220 may produce an absence of a score. For example,if the input metric factor is locale usage, the usage metric isundefined, and the weight is 40%, then the score may be undefined. Ifthere is no score, then the method 411 may continue to operation 612where the input method factor usage metric may be determined. If thereis enough data to produce a score, then the method continues tooperation 617. In operation 617, the score for the input method factor220 may be determined by the daemon 120.

After the factor data is associated with the factor, the method 411 mayproceed to operation 618. Operation 618 may include updating the inputmethod portfolio 210 with the updated usage metric, weight, and score.In operation 618, the weight, and usage metric data for each inputmethod factor 220 may be associated with the input method factor 220 inthe input method portfolio 210. The input method factor 220 may beutilized by the daemon 120. For example, if the daemon 120 determinesthat the PINYIN input method was used four times when browsing the web,then the input method portfolio 210 may contain an entry for pin yin,followed by the fact that PINYIN was used four times by the user usingthe web browser.

In operation 620, the daemon 120 may rank the input methods from theinput method portfolio 210 by applying the weight for each one of theinput method factors 220 to the usage metric. In operation 620, thedaemon 120 may change the rank of the input methods in response toupdates in the input method portfolio 210. For example, if the uservisits a .jp as Japanese domain for three hours, but the primary inputmethod is WUBI as an input method for the Chinese language, then thedaemon 120 may rerank the input methods or factors. In the mentionedexample, the daemon 120 may give a higher weight to more recentlyaccessed domains on the web browser and may increase the Japanese rank.Operation 620 may be further described in FIG. 7.

FIG. 7 depicts a table 700 that may result from the scoring of the inputmethods, consistent with various embodiments. The table 700 may includethe usage metrics and the weights to the factors. The factors shown arelanguage 710, locale 712, and input method 714. The factors are scoredbased on the usage metrics and the weights to the factors. This scoremay be stored in the input method portfolio 210.

The rank 716 is obtained using the scores obtained from the differentfactors. In the shown embodiment, the weight of the language, locale,and the input methods total to 100 percent but the factors may containany number of weights. In various embodiments, the user may modify theweight associated with a particular factor. For example, the user mayassign a higher weight to a mainland China locale than to a SingaporeanChinese locale.

In certain embodiments, the weight may be modified based on userinteractions with the client computer 102. For example, if an IP addressoriginates from Singapore, then the daemon 120 may assign a higherweight to the Singaporean Chinese locale. In another example, the usermay use the WUBI input method to write personal documents but may usePINYIN to write work documents. In this example, the daemon 120 may givea higher weight to the WUBI input method from the time between the hoursof 0900-1500.

In the shown embodiment, the number of times accessed is the preferencewhile the actual number value is a usage metric. The table 700 mayrepresent the usage of one or more applications. For example, the table700 may represent a web browser, or may represent a total of the clientcomputer 102.

In various embodiments, the score is the product of the usage metric andthe weight. The score may be used to determine the rank 716. The rank716 may be determined by combining the scores of the factors. In theshown example, the four input methods are either Chinese, PINYIN andWUBI, or Japanese, ROMANJI and KANA. In the shown example, PINYIN andWUBI may use either the Mainland China locale or Singapore locale formandarin Chinese. All of the factors are combined to produce the scoreon 716. In certain embodiments, the daemon 120 may determine thatChinese is the most accessed language by score with the Mainland Chinalocale the most accessed locale.

In this example, due to Mandarin Chinese having a higher language 710score than Japanese, the PINYIN input method may be ranked higher thanthe ROMANJI input method, even though the ROMANJI input method isaccessed more times than the WUBI input method. In certain embodiments,the weight of language 710 may be reduced or eliminated, and the ROMANJIinput method may be ranked higher than the PINYIN input method.

FIG. 8 depicts a method 414 of presenting an input method rank,consistent with various embodiments. Method 414 may correspond tooperation 414 in FIG. 4. In method 414, the client computer 102 user maypresent an input method rank 224 to the user. The input method rank 224may include the primary input method based on the ranking of the inputmethod in the input method portfolio 210. The method 414 may begin atoperation 806. In operation 806, one or more triggering events aremonitored. The triggering event may trigger the input method rank 224 tobe displayed, e.g., on the user selection interface 232.

The user may further interact with the user selection interface 232using the human interface device 116. The triggering event may use theuser's interaction with specific applications, e.g., a text editor, aweb page, or a word processor, on the client computer 102. Examples of atriggering event for a web browser may include; accessing the webbrowser, visiting a particular domain of a web page that indicates acountry, or action by the human interface device 116 such as typing, orvoice commands. Examples of a triggering event for a word processor mayinclude; using a particular language of a document, or using theapplication from a geographic location of the user. After the daemon 120monitors the client computer 102 for a triggering event in operation806, the method 414 may proceed to operation 808. In operation 808, thedaemon 120 may determine if there is a triggering event. If there is anabsence of a triggering event, then the method 414 may continue tooperation 806. If there is a presence of a triggering event, then themethod 414 may continue to operation 810.

In operation 810, the daemon 120 may ensure that the input method rank224 is presented. Operation 810 may include identifying the primaryinput method using the input method rank 224. For example, the inputmethod rank 224 may include a plurality of input methods and the inputmethod that is ranked first, i.e., the highest score, may be consideredthe primary input method. In various embodiments, only the primary inputmethod may be presented. In certain embodiments, the input method rank224 may be displayed without regard to order or according to a cutoff.For example, if the input method rank 224 is configured to display onlythe top five input methods, then the order of the input methods may bethe second, the third, the fifth, the first, and the fourth inputmethod.

The input method rank 224 may be obtained from operation 411 from FIG.4. For example, if the input method hanja is ranked first in the inputmethod portfolio 210 from operation 411 from FIG. 4, then the Koreanlocale and Korean language may be selected. In another example, if theinput method WUBI is ranked first in the input method portfolio 210,either a mainland China locale, a Hong Kong locale, or a SingaporeanChinese locale may be selected depending on the score of the inputmethod factor locale derived in operation 620.

After the primary input method is selected, the method 414 may continueto operation 812. In operation 812, the locale file package 214 thatcorresponds to a particular input method may be loaded. In variousembodiments, the locale file package 214 may be located in the localefile package 214 on the client computer 102. In certain embodiments, thelocale file package 214 may be downloaded from the network 306 or aserver 304. The locale file package 214 may be the locale associatedwith the primary input method. For example, the WUBI input method maycorrespond to either the mainland China locale or the Taiwan locale, butnot the Japan locale. In certain embodiments, the locale may notcorrelate with the primary input method, e.g., the WUBI input method mayuse the Japan locale as the locale file package 214.

Operation 812 may occur simultaneously with operation 814. In operation814, the daemon 120 may load the input method file package 216 for eachinput method on the input method rank 224. In various embodiments, theinput method rank 224 may be limited, for example, to the top twentyinput methods by score. In certain embodiments, the input method rank224 may encompass the entire input method portfolio 210.

FIG. 9 depicts a method 420 of selecting a preferred input method,consistent with various embodiments. As discussed above, the preferredinput method may be an input method that the user selects other than theprimary input method.

If the user rejects the primary input method and selects another inputmethod, then the method 420 may continue to operation 910. In operation910, the daemon 120 may provide the user with a list of all the inputmethods available. The list may include the input methods installed onthe client computer 102 or available on the server 304 through thenetwork 306. The available input method may also be available through athird-party vendor. Operation 910 may involve referring to an inputmethod server list 222 to obtain the list of input methods. The list ofinput methods may be categorized or in a random order. In certainembodiments, the list of input methods may be ranked in a similar mannerto operation 411 in FIG. 4.

After all input methods available to the user are presented, the method420 may proceed to operation 912. In operation 912, a preferred inputmethod may be selected by the user. In an embodiment, the user may beshown a list of all available input methods. The user may select thepreferred input method based on the user's preferences. For example, theuser may be presented with the WUBI as the primary input method but mayprefer the PINYIN input method and may select the PINYIN input method.

After the user selects the preferred input method, then the method 420may continue to operation 914. In operation 914, the preferred inputmethod installation manager 228 may determine whether the input methodfile package 216 needs to be installed for the preferred input method.The preferred input method installation manager 228 may search the inputmethod file packages 216 on the client computer 102, consistent withvarious embodiments. The preferred input method installation manager 228may also search any network 306 locations for the input method filepackages 216. If the preferred input method is already on the clientcomputer 102, then the method 420 may continue to operation 916. Inoperation 916, the user uses the preferred input method and the method420 may continue to operation 412.

If the preferred input method installation manager 228 requires that thepreferred input method be installed, then the method 420 may continue tooperation 918. In operation 918, the preferred input method installationmanager 228 may also determine whether the input method file package 216or the locale file package 214 is available. In certain embodiments, thepreferred input method installation manager 228 may determine whetherthe server 304 containing the preferred input method file packages,e.g., 304A, 304B, or 304C, is active. If the file packages are notactive, then the method 420 may continue to operation 919 where the useris notified that the file package is not available. After operation 919,the method 420 may proceed to operation 912 where the user may select anew preferred input method.

If the file package is available, then the method 420 may continue tooperation 920 where the preferred input method installation manager 228installs the preferred input method. In certain embodiments, thepreferred input method installation manager 228 may prompt the user toconfirm input method installation.

The user may also authorize the preferred input method installationmanager 228 to automatically install the preferred input method if it isnot available on the client computer 102. If the server 304 is active,then the preferred input method installation files may be obtained andthe preferred input method may be installed. After the preferred inputmethod is installed, then the method 420 may continue to operation 916and the weight of the preferred input method may be adjusted.

Embodiments of the disclosure can take the form of an entirely hardwareembodiment, an entirely software embodiment, or an embodiment containingboth hardware and software elements. In certain embodiments, thedisclosure is implemented in software, which includes but is not limitedto firmware, resident software, microcode, etc.

Furthermore, embodiments of the disclosure can take the form of acomputer program product accessible from a computer-usable orcomputer-readable storage medium providing program code for use by or inconnection with a computer or any instruction execution system. For thepurposes of this description, a computer usable or computer readablestorage medium can be any apparatus that can store the program for useby or in connection with the instruction execution system, apparatus, ordevice.

The computer-useable or computer-readable storage medium can be anelectronic, magnetic, optical, electromagnetic, or semiconductor system(or apparatus or device), or a propagation medium. Examples of acomputer-readable storage medium include a semiconductor or solid statememory, magnetic tape, a removable computer diskette, a random accessmemory (RAM), a read-only memory (ROM), a rigid magnetic disk, and anoptical disk. Current examples of optical disks include a compact diskwith read only memory (CD-ROM), a compact disk with read/Write (CD-R/W),and a digital video disk (DVD).

An embodiment of a data processing system suitable for storing and/orexecuting program code includes at least one processor coupled directlyor indirectly to memory elements through a system bus such as a data,address, and/or control bus. The memory elements can include localmemory employed during actual execution of the program code, bulkstorage, and cache memories which may provide temporary storage of atleast some program code in order to reduce the number of times code mustbe retrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers. Additionally, networkadapters also may be coupled to the system to enable the data processingsystem to become coupled to other data processing systems or remoteprinters or storage devices through intervening private or publicnetworks. Modems, cable modems, and Ethernet cards are just a few of thecurrently available types of network adapters.

Although the operations of the method(s) herein are shown and describedin a particular order, the order of the operations of each method may bealtered so that certain operations may be performed in an inverse orderor so that certain operations may be performed, at least in part,concurrently with other operations. In certain embodiments, instructionsor sub-operations of distinct operations may be implemented in anintermittent and/or alternating manner.

Although specific embodiments of the disclosure have been described andillustrated, the disclosure is not to be limited to the specific formsor arrangements of parts so described and illustrated. The scope of thedisclosure is to be defined by the claims appended hereto and theirequivalents.

What is claimed is:
 1. A system of selecting a primary input method froma plurality of input methods, each input method defines how input from ahuman interface device is interpreted by a receiving application on acomputing processing system, comprising: an input method portfoliohaving the plurality of input methods, each input method having one ormore input method factors; an input method daemon configured to scoreone or more input method factors, and rank the input methods as afunction of the score of the input method factor; and a user selectioninterface configured to visually convey the input methods as a functionof the rank.
 2. The system of claim 1, wherein the primary input methodis the input method with the first rank relative to other input methods.3. The system of claim 1, wherein the input method daemon is configuredto present a preferred input method in response to a rejection of theprimary input method by a user.
 4. The system of claim 3, wherein theinput method daemon is configured to install an input method filepackage in response to a selection of the preferred input method.
 5. Thesystem of claim 3, wherein the input method daemon is configured toupdate the score of the input method factor in the input methodportfolio in response to the selection of the preferred input method.